"""
效果类，该类负责某种属性变化在逻辑层的执行，通过添加cue来实现特效的展示
"""
class_name Effect extends Resource

enum TimeType{
	HIT,
	EVER,
	TIMES,
	COUNT,
}

enum EffectType{
	SINGLE,
	STACKABLE,
}

var life:TimeType = TimeType.HIT#生命周期
var effect_type:EffectType = EffectType.STACKABLE#叠加类型
signal effect_end#效果结束时发出
var cue_list:Array[GDScript] = []# cue列表
var AS:AbilitySystem# 当前的AbilitySystem

# Effect被生成时触发，创建相关Cue特效
func in_effect(_as:AbilitySystem) -> void:
	self.AS = _as
	self.effect_apply()

# 根据标签创建cue,并赋予到相应对象的AbilitySystem组件中
func create_cue():
	if cue_list.is_empty():
		return
	# 给宿主添加对应的cue
	for _cue in cue_list:
		var cue = _cue.new()
		cue.on_end_effect(effect_end)
		AS.add_cue(cue)

# 具体effect的执行
func effect_apply() -> void:
	self.create_cue()
	pass

#效果结束，将资源的所有引用设置为空，引擎会自动释放，或者使用free()强制释放
func end_effect() -> void:
	self.effect_end.emit()
	pass
